
        <html>
			<head>
			     <title>移花接木大法：新型“白利用”华晨远控木马分析 - 360安全卫士</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/6262">http://drops.wooyun.org/papers/6262</a></h1>
				
      <p>
        <h1>0x00 前言</h1>

<hr />

<p>“白利用”是木马对抗主动防御类软件的一种常用手法。国内较早一批“白利用”木马是通过系统文件rundll32.exe启动一个木马dll文件，之后又发展出劫持合法软件的dll组件来加载木马dll的攻击方式。</p>

<p>随着安全软件对“白利用”的防御机制日益完善，木马也在花样翻新。近期，360QVM引擎团队发现“华晨同步专家”远控木马家族采用了比较另类的“白利用”技术：该木马利用白文件加载dll文件后，再次启动白文件并卸载白进程内存空间，然后重新填充病毒代码执行。</p>

<p>这种“移花接木”的手法，使得病毒代码均通过白进程主模块执行，能够绕过多数安全软件的主动防御规则，具有较强的存活能力。以下是对此木马详细的技术分析：</p>

<!--more-->

<h1>0x01 木马分析</h1>

<hr />

<p>该木马伪装成“美女图片”通过社交软件、电子邮件等方式传播，一旦中招，电脑将被黑客发送指令执行摄像头监控、屏幕监控等远程控制行为。目前已知该木马主要变种达到22个。</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103735438.png" alt="enter image description here" /></p>

<p>图：“华晨同步专家”远控木马及变种</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103759358.png" alt="enter image description here" /></p>

<p>图：木马执行过程</p>

<p>“华晨同步专家”木马文件：</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103824292.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103891584.png" alt="enter image description here" /></p>

<p>美女图片.exe：运行后会释放update.exe、ETComm.dll、wc.dat这三个文件，并运行update.exe。这种“三合一”的打包方式相比压缩包更利于木马传播。</p>

<ol>
<li>update.exe：盛大网络的ET语音启动程序</li>
<li>ETComm.dll：用于劫持盛大程序的木马dll文件</li>
<li>wc.dat：zlib压缩加密的远程控制木马</li>
</ol>

<p>我们首先从ETComm.dll入手分析：</p>

<p><strong><em>ETComm.dll分析过程</em></strong></p>

<p>DllMain中首先获取模块完整路径</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103888820.png" alt="enter image description here" /></p>

<p>比较自身完整路径是否为<code>C:\$WinBackUP.H1502\BinBackup\Images\update.exe</code> 如果不在<code>C:\$WinBackUP.H1502\BinBackup\Images</code>目录下则将<code>ETComm.dll</code>、<code>wc.dat</code>、<code>update.exe</code>拷贝过去，接下来直接进入<code>100016A0</code></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103844495.png" alt="enter image description here" /></p>

<p>100016A0进来以后首先访问C:\$WinBackUP.H1502\BinBackup\Images\wc.dat</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103866223.png" alt="enter image description here" /></p>

<p>申请一段内存后将wc.dat的内容读进去</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103833108.png" alt="enter image description here" /></p>

<p>将读出来的文件内容的前四位与0x36异或，得出0x14E00</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103813707.png" alt="enter image description here" /></p>

<p>将解密出来的0x14e00给到一个变量</p>

<p>紧接着就申请出来一块0x14E00大小的内存</p>

<p>之后将这些数据作为参数传递到Zlib的解压函数中</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103937365.png" alt="enter image description here" /></p>

<p>解出来的数据如下</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103980642.png" alt="enter image description here" /></p>

<p>由此我们可以得出wc.dat的结构，第一个DWORD存放的是UnpackFileSize，之后的数据存放的是压缩后的文件数据，此时是最好的dump时机。</p>

<p>Dump出来的文件：</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103910031.png" alt="enter image description here" /></p>

<p><strong><em>接下来是为内存运行exe做准备了</em></strong></p>

<p>alignPEToMem函数主要作用为加载PE到内存，该函数主要内容为对其exe节数据进行初始化操作。AttachPE主要作用为创建外壳进程（盛大网络ET语音启动程序），并替换进程数据然后执行真正的病毒代码</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103930832.png" alt="enter image description here" /></p>

<p>我们重点来看下AttachPE函数的行为：</p>

<p>首先挂起模式再次运行<code>C:\$WinBackUP.H1502\BinBackup\Images\update.exe</code></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103999984.png" alt="enter image description here" /></p>

<p>调用GetThreadContext获取信息目标进程的线程句柄</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103911499.png" alt="enter image description here" /></p>

<p>得到的信息存放在结构体<code>lpContext</code>中，接着读取了目标进程的<code>lpContext</code>结构体中<code>Ebx+8</code>的数据。</p>

<p><code>[lpContext.Ebx+8]</code>处存的是外壳进程的加载基址，该目标进程的基址为<code>0x00400000</code></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507103930474.png" alt="enter image description here" /></p>

<p>动态获取<code>ntdll</code>的<code>ZwUnmapViewOfSection</code>并调用，卸载目标进程原外壳内存数据</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104053258.png" alt="enter image description here" /></p>

<p>重新在目标傀儡进程中申请傀儡代码用到的内存，<code>0x00400000</code>大小为<code>2C000</code></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104045527.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104049575.png" alt="enter image description here" /></p>

<p>内存申请成功后在傀儡进程的<code>Context.ebx+8</code>中写入新的基址（因为两个文件基址都为<code>0x400000</code>，所以这一步并没有什么用，但是如果对于两个基址不一样的文件这一步就非常必要了）</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104043391.png" alt="enter image description here" /></p>

<p>然后在新申请的内存中写入已经展开了所有节数据的病毒代码，大小为0x2C000</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104045705.png" alt="enter image description here" /></p>

<p>重置运行环境中的入口地址，新的OEP为基址+0x0002A820</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104079880.png" alt="enter image description here" /></p>

<p>更新傀儡进程运行环境后恢复傀儡进程运行</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104064214.png" alt="enter image description here" /></p>

<p>至此ETComm.dll的任务已经完成，直接退出了进程</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104038704.png" alt="enter image description here" /></p>

<p><strong><em>接下来我们来分析被偷梁换柱的update.exe进程</em></strong></p>

<p>从入口点我们可以看出是UPX加壳</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104118390.png" alt="enter image description here" /></p>

<p>直接ESP定律到程序OEP，入口点代码可以看出是VC6.0所编译</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104174047.png" alt="enter image description here" /></p>

<p>来到Main函数我们可以看到先是调用了一些sleep(0)</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104119031.png" alt="enter image description here" /></p>

<p>后面有一些字符串单字节赋值，我们可以看出他拼出来的字符串是Kernel32.dll和GetMoudleFileNameA，分别给到了变量LibFileName和ProcName</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104174834.png" alt="enter image description here" /></p>

<p>动态获取GetMoudleFileNameA</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104121239.png" alt="enter image description here" /></p>

<p>通过GetMoudleFileNameA获取到文件所在路径后，将该路径写入注册表作为启动项，启动项名称为“Realtek高清晰音频管理器”</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104194290.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104274424.png" alt="enter image description here" /></p>

<p>获取资源中的名为“dll”的资源</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104246677.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104253648.png" alt="enter image description here" /></p>

<p>解密算法为</p>

<pre><code>xor 0xF1
add 0xF1
</code></pre>

<p>中间有很多sleep(0)做干扰</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104288716.png" alt="enter image description here" /></p>

<p>解出来的文件</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104238262.png" alt="enter image description here" /></p>

<p>Dump出来是dll简单观察发现是华晨远控（Gh0st修改）</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104242468.png" alt="enter image description here" /></p>

<p>继续往下就是内存加载dll。抛弃系统的LoadLibrary和GetProcAddress来自己实现则会使dll不用落地，其目的是躲避安全软件的云查杀。</p>

<p>LoadLibrary的实现过程如下：</p>

<p>申请内存，写入PE头数据</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104233212.png" alt="enter image description here" /></p>

<p>循环拷贝各个节数据</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104394486.png" alt="enter image description here" /></p>

<p>处理重定位</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104365576.png" alt="enter image description here" /></p>

<p>读取dll的引入表部分，加载引入表部分需要的，并填充需要的函数入口的真实地址</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104336920.png" alt="enter image description here" /></p>

<p>dll</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104331851.png" alt="enter image description here" /></p>

<p>修改各个节内存属性，单独设置其对应内存页的属性</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104346219.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104336951.png" alt="enter image description here" /></p>

<p>执行DllMain函数</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104452684.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104446203.png" alt="enter image description here" /></p>

<p>GetProcAddress实现过程：</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104438450.png" alt="enter image description here" /></p>

<p>调用自写GetProcAddress获取“Fi”导出函数并调用</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104473158.png" alt="enter image description here" /></p>

<p>Fi函数负责将整个远控执行起来了。</p>

<p>以下是远控基本信息：</p>

<pre><code>远控上线地址：dddd.ndiii.com
端口：2012
分组名称：Default
远控官网：http://www.jinjingltsh.com/
</code></pre>

<p>“华晨同步专家”官网号称“拥有国家政府机关认证，与众多安全厂商均有合作”，实际上完全是其捏造的。</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104489461.png" alt="enter image description here" /></p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104573978.png" alt="enter image description here" /></p>

<h1>0x02 总结</h1>

<hr />

<p>通过以上分析我们看出，“华晨同步专家”远控木马的新颖之处，在于利用白进程内存运行exe，内存运行dll，真正的病毒文件并不落地，仅存活在内存当中，具有较强的免杀能力。</p>

<p>根据VirusTotal对此木马较新变种样本的扫描结果，57款杀毒软件中有17款可以将其检出，检出率约为30%：</p>

<p><img src="http://static.wooyun.org//drops/20150625/2015062507104522734.png" alt="enter image description here" /></p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          